The command line interface (sometimes also referred to as a command shell or simply a “shell”) is a common interface for computer operating systems (e.g., DOS, UNIX, etc.). A user enters commands on the command line one line after another and the operating system executes the commands in the order of entry. The operating system does not distinguish a command from a program. Commands and programs are run after the user has typed the name of the command or program and pressed the “Enter” key. The pressing of the “Enter” key signals to the system that the user has finished entering the text and it may begin running the command. For example, the user may type “Command0” in the command line interface and then press the “Enter” key. In this case, the pressing of the “Enter” key signals to the operating system that it should execute the “Command0” command.
In the case of the operating systems described above (e.g., DOS, UNIX), there is a standard set of commands included with the operating system. However, software developers may desire to add additional commands to this standard set while other software developers may be developing completely new operating systems which do not have any commands. These new operating systems may be, for example, for embedded devices (i.e., any device that may be networked with another electronic device). Examples of embedded devices include wireless telephones, PDAs, home appliances, office products, networking equipment, factory automation products, automotive components, security devices, etc. These operating system developers generally use a software development suite to build the new operating system including a command line interface and accompanying commands.
Despite the importance of the command line interface, it is often one of the most poorly engineered aspects of device architectures. Commands are often designed and implemented in a quick and dirty fashion merely to test a newly developed feature. This development scheme does not lend itself to an architecture that is both efficient at run-time and easy to modify and extend. Also, elements of the command line interface are often “hard coded” directly into the application. A lack of an abstract representation precludes utilization of modeling tools (e.g., GUIs) and other automated or semi-automated operations (e.g., a translation of natural language text, generation of a documentation, etc.)